One of the hardest things to do in test environments is to know how to handle test failures. Some tests may fail for a variety of reasons, some of which may be acceptable, or even expected (as for example, in testing the correctness of a program's response to incorrect inputs), and others are not. Generally this is handled with return codes. Return codes are very difficult to manage. If tests are calling other tests, then the higher level tests will often need to know how to handle a great number of different return codes in different situations. Generally this is ignored, and tests end up returning only a pass/fail value, and losing a lot of information in how the test failed. To find out exactly how a specific test failed may require a parse of its logs, which is both difficult and time consuming.
It would thus be desirable to have a technology for controlling parent and child tests in test suites, and in particular, for enabling failures in child tests to be more efficiently handled.